package com.itlong.cloud.smartcard.dao;

import com.itlong.cloud.POJO.PO.AppUserProjectPO;
import com.itlong.cloud.POJO.PO.ProjectPO;
import com.itlong.cloud.POJO.VO.smartcard.SmartCardOldProjectInfoPageVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      旧一卡通_用户模块操作数据库接口。
 * <desc/>
 *
 * @createDate 2017/11/20.
 */
@Mapper
@Repository
public interface ISmartCardOldProjectDao {

    /**
     * <desc>
     *      查询数据库是否存在同样的projectId。
     * <desc/>
     *
     * @param  projectId 项目编号
     * @return 返回记录数
     * @author shengen.T
     * @createDate 2017/11/20
     */
    ProjectPO selectProjectId(@Param("projectId") String projectId);

    /**
     * <desc>
     *      查询数据库是否存在同样的projectName。
     * <desc/>
     *
     * @param projectName 项目名称
     * @return 返回记录数
     * @author shengen.T
     * @createDate 2017/11/20
     */
    Integer selectProjectNameCount(@Param("projectName") String projectName);


    /**
     * <desc>
     *      添加单个项目
     * <desc/>
     *
     * @param params 保存参数
     * @return
     * @author shengen.T
     * @createDate 2017/11/20
     */
    Integer saveProject(Map<String, Object> params);


    /**
     * <desc>
     *      根据用户ID和项目编号查询用户项目关系表中的记录。
     * <desc/>
     *
     * @param  userId  用户ID
     * @param  projectId 项目编号
     * @return 返回记录数
     * @author shengen.T
     * @createDate 2017/11/20
     */
    Integer selectUserProjectCount(@Param("userId") String userId,@Param("projectId") String projectId);


    /**
     * <desc>
     *      通过地址名称查询地址ID 。
     * <desc/>
     *
     * @param  addressName 地址名称
     * @return 返回地址ID
     * @author shengen.T
     * @createDate 2017/11/20
     */
    String selectIdByName(@Param("addressName") String addressName);

    /**
     * <desc>
     *      更新项目信息。
     * <desc/>
     *
     * @param params
     * @return
     * @author shengen.T
     * @createDate 2017/11/20
     */
    Integer updateProject(Map<String, Object> params);

    /**
     * <desc>
     *      保存用户与项目关系信息
     * </desc>
     * @param params
     * @return
     * @author shengen.T
     * @createDate 2017/11/20
     */
    Integer saveUserProject(Map<String, Object> params);

    /**
     * <desc>
     *      更新用户信息
     * </desc>
     * @param appUserProjectPO App用户项目关系实体对象
     * @return Integer
     * @author shengen.T
     * @createDate 2017/11/20
     */
    Integer updateUserProject(AppUserProjectPO appUserProjectPO);


     /**
      * <desc>
      *      获取项目信息列表。
      * <desc/>
      *
      * @param  projectId
      * @return
      * @author shenge.T
      * @createDate 2017/11/21
      */
    List<SmartCardOldProjectInfoPageVO> getProjectInfoList(@Param("projectId") String projectId);


     /**
      * <desc>
      *      批量删除项目。
      * <desc/>
      *
      * @param  projectIds 项目编号列表
      * @return
      * @author shengen.T
      * @createDate 2017/11/22
      */
    Integer deleteProject(@Param("projectIds") String[] projectIds);
}
